DESCRIPCION DEL PROBLEMA

HIPOTESIS

CARGA Y DEPURACION DE DATOS

Carga de Datos

Datos de 2014

Durante la carga de datos se realizo la verificacion de las clases de accidentes e inicialmente se identificaron 6 categorias: 1. Atropello 2. Caida_Ocupante 3. Choque 4. Incendio 5. Otro 6. Volcamiento

Sin embargo entre 2014 y 2017 solo se presentaron 17 casos de incendio y en el año 2018, 7 casos. Dada la poca cantidad de eventos se dejaron finalmente 5 categorias dado que incendio se incorporo a otro:

  1. Atropello
  2. Caida_Ocupante
  3. Choque
  4. Otro
  5. Volcamiento
raw_data_2014 <- read.csv(file="./data/Accidentalidad_georreferenciada_2014.csv", encoding="UTF-8", header=TRUE, sep=",")
head(raw_data_2014)
##   X.U.FEFF.OBJECTID        X       Y RADICADO                    FECHA
## 1            211279 831190.1 1179690  1423828 2014-01-01T00:00:00.000Z
## 2            211280 835013.6 1184224  1423839 2014-01-01T00:00:00.000Z
## 3            211281 837032.7 1184750  1423840 2014-01-01T00:00:00.000Z
## 4            211282 830649.5 1181383  1423849 2014-01-01T00:00:00.000Z
## 5            211283 833740.8 1188644  1423890 2014-01-01T00:00:00.000Z
## 6            211284 836425.4 1186933  1423892 2014-01-01T00:00:00.000Z
##       HORA DIA PERIODO             CLASE    DIRECCION
## 1 02:20 AM   1    2014            Choque   CR 80 CL 8
## 2 12:50 AM   1    2014         Atropello  CR 53 CL 61
## 3 01:00 AM   1    2014         Atropello  CR 39 CL 70
## 4 12:37 AM   1    2014         Atropello  CL 32 CR 84
## 5 10:40 AM   1    2014 Caída de Ocupante CR 80 CL 101
## 6 04:00 AM   1    2014            Choque  CR 48 CL 93
##              DIRECCION_ENC CBML                    TIPO_GEOCOD GRAVEDAD
## 1 CR  080   008  000 00000 1611 Malla vial aproximada: CR 81-7   HERIDO
## 2 CR  053   061  000 00000 1003                     Malla vial   HERIDO
## 3 CR  039   070  000 00000 0308                     Malla vial   HERIDO
## 4 CL  032   084  000 00000 1617                     Malla vial   HERIDO
## 5 CR  080   101  000 00000 0603                     Malla vial   HERIDO
## 6 CR  048   093  000 00000 0401                     Malla vial   HERIDO
##                 BARRIO          COMUNA       DISENO DIA_NOMBRE MES
## 1   Loma de los Bernal           Belén Tramo de via  MIÉRCOLES   1
## 2       Jesús Nazareno   La Candelaria Tramo de via  MIÉRCOLES   1
## 3    Manrique Oriental        Manrique Tramo de via  MIÉRCOLES   1
## 4         Las Mercedes           Belén Tramo de via  MIÉRCOLES   1
## 5 Doce de Octubre No.2 Doce de Octubre Tramo de via  MIÉRCOLES   1
## 6               Berlin        Aranjuez Interseccion  MIÉRCOLES   1
summary(raw_data_2014)
##  X.U.FEFF.OBJECTID       X                Y              RADICADO        
##  Min.   :211279    Min.   :823074   Min.   :1172279   Min.   :3.800e+01  
##  1st Qu.:222939    1st Qu.:833036   1st Qu.:1181405   1st Qu.:1.436e+06  
##  Median :234284    Median :834331   Median :1183250   Median :1.447e+06  
##  Mean   :234276    Mean   :834150   Mean   :1183303   Mean   :4.810e+15  
##  3rd Qu.:245700    3rd Qu.:835417   3rd Qu.:1185597   3rd Qu.:1.459e+06  
##  Max.   :257033    Max.   :845503   Max.   :1189981   Max.   :5.002e+19  
##                                                                          
##                       FECHA             HORA            DIA       
##  2014-06-03T00:00:00.000Z:  168   04:00 PM:  776   Min.   : 1.00  
##  2014-02-13T00:00:00.000Z:  163   06:00 PM:  768   1st Qu.: 8.00  
##  2014-08-06T00:00:00.000Z:  163   05:00 PM:  766   Median :16.00  
##  2014-08-08T00:00:00.000Z:  158   02:00 PM:  705   Mean   :15.73  
##  2014-05-19T00:00:00.000Z:  157   03:00 PM:  695   3rd Qu.:23.00  
##  2014-07-07T00:00:00.000Z:  157   01:00 PM:  679   Max.   :31.00  
##  (Other)                 :40628   (Other) :37205                  
##     PERIODO                   CLASE               DIRECCION    
##  Min.   :2014   Atropello        : 4779   CR 64 C CL 78:  230  
##  1st Qu.:2014   Caída de Ocupante: 4157   CR 1 CL 1    :  165  
##  Median :2014   Choque           :27157   CR 64 C CL 67:  151  
##  Mean   :2014   Incendio         :    8   CR 57 CL 44  :  118  
##  3rd Qu.:2014   Otro             : 4521   CR 80 CL 50  :  115  
##  Max.   :2014   Volcamiento      :  972   CR 80 CL 65  :  115  
##                                           (Other)      :40700  
##                     DIRECCION_ENC        CBML      
##  CR  064 C   078  000 00000:  248   1019   : 1148  
##  CR  001   001  000 00000  :  165   0517   :  979  
##  CR  064 C   067  000 00000:  151   1507   :  783  
##  CR  057   044  000 00000  :  118   1012   :  774  
##  CR  080   065  000 00000  :  116   1007   :  733  
##  CR  080   050  000 00000  :  115   1105   :  733  
##  (Other)                   :40681   (Other):36444  
##                         TIPO_GEOCOD          GRAVEDAD    
##  Malla vial                   :30320   HERIDO    :23077  
##  Malla vial cruce invertido   : 2251   MUERTO    :  256  
##  EPM sin Interior             :  987   SOLO DAÑOS:18261  
##  EPM con Interior             :  435                     
##  Malla vial aproximada: CR 1-2:  167                     
##  ZONA RURAL                   :   97                     
##  (Other)                      : 7337                     
##                 BARRIO                   COMUNA                DISENO     
##  La Candelaria     : 1151   La Candelaria   : 8760   Tramo de via :33745  
##  Caribe            :  980   Laureles Estadio: 4678   Interseccion : 5305  
##  Campo Amor        :  786   Castilla        : 4204   Lote o Predio: 1083  
##  Perpetuo Socorro  :  775   El Poblado      : 3154   Glorieta     :  702  
##  Los Conquistadores:  735   Guayabal        : 2946                :  256  
##  Guayaquil         :  733   Robledo         : 2828   Ciclo Ruta   :  192  
##  (Other)           :36434   (Other)         :15024   (Other)      :  311  
##      DIA_NOMBRE        MES        
##  DOMINGO  :4209   Min.   : 1.000  
##  JUEVES   :6143   1st Qu.: 4.000  
##  LUNES    :6008   Median : 7.000  
##  MARTES   :6301   Mean   : 6.543  
##  MIÉRCOLES:6420   3rd Qu.: 9.000  
##  SÁBADO   :5984   Max.   :12.000  
##  VIERNES  :6529
str(raw_data_2014)
## 'data.frame':    41594 obs. of  19 variables:
##  $ X.U.FEFF.OBJECTID: int  211279 211280 211281 211282 211283 211284 211285 211286 211287 211288 ...
##  $ X                : num  831190 835014 837033 830649 833741 ...
##  $ Y                : num  1179690 1184224 1184750 1181383 1188644 ...
##  $ RADICADO         : num  1423828 1423839 1423840 1423849 1423890 ...
##  $ FECHA            : Factor w/ 365 levels "2014-01-01T00:00:00.000Z",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ HORA             : Factor w/ 967 levels "01:00 AM","01:00 PM",..: 95 954 1 938 777 201 469 268 37 72 ...
##  $ DIA              : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ PERIODO          : int  2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ...
##  $ CLASE            : Factor w/ 6 levels "Atropello","Caída de Ocupante",..: 3 1 1 1 2 3 3 3 3 2 ...
##  $ DIRECCION        : Factor w/ 12673 levels "CL 1 A CR 42",..: 11441 8871 6987 1424 11297 8063 3081 6269 11142 8131 ...
##  $ DIRECCION_ENC    : Factor w/ 12510 levels "000","CL     029  000 00000",..: 11024 8642 6786 915 11166 7817 2469 6072 10863 7898 ...
##  $ CBML             : Factor w/ 391 levels "","0101","01010480009",..: 333 192 39 340 105 48 170 176 241 280 ...
##  $ TIPO_GEOCOD      : Factor w/ 2252 levels "Catastro con Interior",..: 2064 5 5 5 5 5 5 5 5 5 ...
##  $ GRAVEDAD         : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ BARRIO           : Factor w/ 313 levels "","6001","Aguas Frias",..: 181 129 201 175 81 40 31 155 294 302 ...
##  $ COMUNA           : Factor w/ 24 levels "","Aranjuez",..: 4 16 18 4 11 2 5 5 17 12 ...
##  $ DISENO           : Factor w/ 13 levels "","Ciclo Ruta",..: 11 11 11 11 11 4 11 4 11 11 ...
##  $ DIA_NOMBRE       : Factor w/ 7 levels "DOMINGO  ","JUEVES   ",..: 5 5 5 5 5 5 5 5 5 5 ...
##  $ MES              : int  1 1 1 1 1 1 1 1 1 1 ...
levels(raw_data_2014$CLASE)
## [1] "Atropello"         "Caída de Ocupante" "Choque"           
## [4] "Incendio"          "Otro"              "Volcamiento"
levels(raw_data_2014$CLASE) <- c("Atropello","Caida_Ocupante","Choque","Otro","Otro",
                                 "Volcamiento")
levels(raw_data_2014$CLASE)
## [1] "Atropello"      "Caida_Ocupante" "Choque"         "Otro"          
## [5] "Volcamiento"

Datos de 2015

raw_data_2015 <- read.csv(file="./data/Accidentalidad_georreferenciada_2015.csv", encoding="UTF-8", header=TRUE, sep=",")
head(raw_data_2015)
##   X.U.FEFF.OBJECTID        X       Y RADICADO                    FECHA
## 1              1001 835766.9 1183119  1471803 2015-01-13T00:00:00.000Z
## 2              1002 839496.9 1177763  1471804 2015-01-13T00:00:00.000Z
## 3              1003 832970.8 1178867  1471805 2015-01-13T00:00:00.000Z
## 4              1004 831318.1 1187204  1471806 2015-01-13T00:00:00.000Z
## 5              1005 833710.7 1185631  1471807 2015-01-13T00:00:00.000Z
## 6              1006 839496.9 1177763  1471808 2015-01-12T00:00:00.000Z
##       HORA DIA PERIODO       CLASE       DIRECCION
## 1 02:20 PM  13    2015 Volcamiento     CR 43 CL 54
## 2 09:00 AM  13    2015        Otro       CR 1 CL 1
## 3 10:00 AM  13    2015 Volcamiento    CR 58 D CL 3
## 4 06:30 PM  13    2015        Otro CL 68 B CR 96 E
## 5 05:40 AM  13    2015        Otro     CR 68 CL 70
## 6 09:30 AM  12    2015 Volcamiento       CR 1 CL 1
##                  DIRECCION_ENC CBML                     TIPO_GEOCOD
## 1     CR  043   054  000 00000 1016                      Malla vial
## 2     CR  001   001  000 00000 9086   Malla vial aproximada: CR 1-2
## 3   CR  058 D   003  000 00000 1507  Malla vial aproximada: CR 58-4
## 4 CL  068 B   096 E  000 00000 0724 Malla vial aproximada: CL 68-95
## 5     CR  068   070  000 00000 0519 Malla vial aproximada: CR 69-71
## 6     CR  001   001  000 00000 9086   Malla vial aproximada: CR 1-2
##   GRAVEDAD            BARRIO                       COMUNA       DISENO
## 1   HERIDO            Boston                La Candelaria Tramo de via
## 2   HERIDO Suburbano El Plan Corregimiento de Santa Elena Tramo de via
## 3   HERIDO        Campo Amor                     Guayabal Tramo de via
## 4   HERIDO        Monteclaro                      Robledo Tramo de via
## 5   HERIDO       El Progreso                     Castilla Tramo de via
## 6   HERIDO Suburbano El Plan Corregimiento de Santa Elena Tramo de via
##   DIA_NOMBRE MES
## 1  MARTES      1
## 2  MARTES      1
## 3  MARTES      1
## 4  MARTES      1
## 5  MARTES      1
## 6  LUNES       1
summary(raw_data_2015)
##  X.U.FEFF.OBJECTID       X                Y              RADICADO        
##  Min.   :    1     Min.   :821476   Min.   :1172359   Min.   :3.270e+02  
##  1st Qu.:11558     1st Qu.:833029   1st Qu.:1181443   1st Qu.:1.482e+06  
##  Median :23149     Median :834305   Median :1183204   Median :1.494e+06  
##  Mean   :23110     Mean   :834102   Mean   :1183264   Mean   :2.175e+16  
##  3rd Qu.:34664     3rd Qu.:835387   3rd Qu.:1185476   3rd Qu.:1.506e+06  
##  Max.   :46172     Max.   :842417   Max.   :1193451   Max.   :5.002e+20  
##                                                                          
##                       FECHA             HORA            DIA       
##  2015-08-18T00:00:00.000Z:  183   07:00 AM:  951   Min.   : 1.00  
##  2015-08-28T00:00:00.000Z:  183   08:00 AM:  921   1st Qu.: 8.00  
##  2015-09-11T00:00:00.000Z:  162   10:00 AM:  801   Median :16.00  
##  2015-12-07T00:00:00.000Z:  161   07:30 AM:  767   Mean   :15.74  
##  2015-09-17T00:00:00.000Z:  160   06:30 AM:  756   3rd Qu.:23.00  
##  2015-09-18T00:00:00.000Z:  160   06:00 AM:  741   Max.   :31.00  
##  (Other)                 :41071   (Other) :37143                  
##     PERIODO                   CLASE               DIRECCION    
##  Min.   :2015   Choque           :28249   CR 64 C CL 78:  211  
##  1st Qu.:2015   Atropello        : 4485   CR 63 CL 44  :  177  
##  Median :2015   Otro             : 4218   CR 57 CL 44  :  172  
##  Mean   :2015   Caida Ocupante   : 3673   CR 64 C CL 67:  132  
##  3rd Qu.:2015   Volcamiento      : 1435   CR 80 CL 50  :  122  
##  Max.   :2015   Caída de Ocupante:   18   CR 52 CL 10  :  121  
##                 (Other)          :    2   (Other)      :41145  
##                     DIRECCION_ENC        CBML      
##  CR  064 C   078  000 00000:  227   1019   : 1067  
##  CR  063   044  000 00000  :  177   0517   :  899  
##  CR  057   044  000 00000  :  173   1007   :  882  
##  CR  064 C   067  000 00000:  132   1006   :  867  
##  CR  080   050  000 00000  :  122   1012   :  804  
##  CR  052   010  000 00000  :  121   1105   :  783  
##  (Other)                   :41128   (Other):36778  
##                           TIPO_GEOCOD          GRAVEDAD    
##  Malla vial                     :31011   HERIDO    :23273  
##  Malla vial cruce invertido     : 2341   MUERTO    :  250  
##  EPM sin Interior               :  886   SOLO DAÑOS:18557  
##  EPM con Interior               :  459                     
##  Malla vial aproximada: CR 1-2  :   86                     
##  Malla vial aproximada: CR 65-80:   85                     
##  (Other)                        : 7212                     
##                 BARRIO                   COMUNA                DISENO     
##  La Candelaria     : 1069   La Candelaria   : 9355   Tramo de via :33729  
##  Caribe            :  899   Laureles Estadio: 4908   Interseccion : 5794  
##  Guayaquil         :  883   Castilla        : 4000   Lote o Predio: 1219  
##  San Benito        :  868   El Poblado      : 3194   Glorieta     :  751  
##  Perpetuo Socorro  :  804   Robledo         : 2884                :  250  
##  Los Conquistadores:  785   Guayabal        : 2814   Paso Elevado :  101  
##  (Other)           :36772   (Other)         :14925   (Other)      :  236  
##      DIA_NOMBRE        MES        
##  DOMINGO  :4048   Min.   : 1.000  
##  JUEVES   :6516   1st Qu.: 4.000  
##  LUNES    :5973   Median : 7.000  
##  MARTES   :6696   Mean   : 6.624  
##  MIÉRCOLES:6341   3rd Qu.:10.000  
##  SÁBADO   :6003   Max.   :12.000  
##  VIERNES  :6503
str(raw_data_2015)
## 'data.frame':    42080 obs. of  19 variables:
##  $ X.U.FEFF.OBJECTID: int  1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 ...
##  $ X                : num  835767 839497 832971 831318 833711 ...
##  $ Y                : num  1183119 1177763 1178867 1187204 1185631 ...
##  $ RADICADO         : num  1471803 1471804 1471805 1471806 1471807 ...
##  $ FECHA            : Factor w/ 365 levels "2015-01-01T00:00:00.000Z",..: 13 13 13 13 13 12 13 13 13 13 ...
##  $ HORA             : Factor w/ 898 levels "01:00 AM","01:00 PM",..: 103 610 691 413 342 651 560 493 342 868 ...
##  $ DIA              : int  13 13 13 13 13 12 13 13 13 13 ...
##  $ PERIODO          : int  2015 2015 2015 2015 2015 2015 2015 2015 2015 2015 ...
##  $ CLASE            : Factor w/ 8 levels "","Atropello",..: 8 7 8 7 7 8 7 7 7 4 ...
##  $ DIRECCION        : Factor w/ 12729 levels "CL 1 A CR 35",..: 7461 5630 9229 4297 10332 5630 9640 10693 9766 9166 ...
##  $ DIRECCION_ENC    : Factor w/ 12523 levels "000","CL     010  000 00000",..: 7057 5546 8947 3700 9999 5546 9515 10334 9266 8875 ...
##  $ CBML             : Factor w/ 394 levels "","0","0101",..: 217 389 317 150 106 389 85 133 232 200 ...
##  $ TIPO_GEOCOD      : Factor w/ 2229 levels "Catastro con Interior",..: 5 1014 1645 797 1844 1014 1728 1892 5 5 ...
##  $ GRAVEDAD         : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ BARRIO           : Factor w/ 319 levels "","0","6001",..: 51 283 62 210 99 283 170 76 194 248 ...
##  $ COMUNA           : Factor w/ 26 levels "","0","Aranjuez",..: 18 12 15 22 7 12 7 22 19 18 ...
##  $ DISENO           : Factor w/ 13 levels "","Ciclo Ruta",..: 11 11 11 11 11 11 11 11 11 11 ...
##  $ DIA_NOMBRE       : Factor w/ 7 levels "DOMINGO  ","JUEVES   ",..: 4 4 4 4 4 3 4 4 4 4 ...
##  $ MES              : int  1 1 1 1 1 1 1 1 1 1 ...
levels(raw_data_2015$CLASE)
## [1] ""                  "Atropello"         "Caída de Ocupante"
## [4] "Caida Ocupante"    "Choque"            "Incendio"         
## [7] "Otro"              "Volcamiento"
levels(raw_data_2015$CLASE) <- c("Otro","Atropello","Caida_Ocupante","Caida_Ocupante","Choque",
                                 "Otro","Otro","Volcamiento")
levels(raw_data_2015$CLASE)
## [1] "Otro"           "Atropello"      "Caida_Ocupante" "Choque"        
## [5] "Volcamiento"

Datos 2016

raw_data_2016 <- read.csv(file="./data/Accidentalidad_georreferenciada_2016.csv", encoding="UTF-8", header=TRUE, sep=",")
head(raw_data_2016)
##   X.U.FEFF.OBJECTID        X       Y RADICADO                    FECHA
## 1            259034 827277.9 1175177  1519832 2016-01-20T00:00:00.000Z
## 2            259035 835105.9 1183570  1519765 2016-01-20T00:00:00.000Z
## 3            259036 834811.1 1182025  1519752 2016-01-20T00:00:00.000Z
## 4            259037 836020.8 1178803  1519682 2016-01-20T00:00:00.000Z
## 5            259038 832264.6 1185704  1519685 2016-01-20T00:00:00.000Z
## 6            259040 831843.3 1183130  1519883 2016-01-20T00:00:00.000Z
##       HORA DIA PERIODO       CLASE         DIRECCION
## 1 11:00 AM  20    2016      Choque CR 55 CL 48 A Sur
## 2 01:25 PM  20    2016      Choque       CL 54 CR 51
## 3 02:35 PM  20    2016      Choque       CR 46 CL 40
## 4 08:40 AM  20    2016      Choque     CR 30 CL 10 C
## 5 10:30 AM  20    2016 Volcamiento       CR 80 CL 64
## 6 10:45 AM  20    2016      Choque       CR 78 CL 44
##                 DIRECCION_ENC CBML                     TIPO_GEOCOD
## 1 CR  055  S 048 A  000 00000 8000                      Malla vial
## 2    CL  054   051  000 00000 1005                      Malla vial
## 3    CR  046   040  000 00000 1013                      Malla vial
## 4  CR  030   010 C  000 00000 1407                      Malla vial
## 5    CR  080   064  000 00000 0705 Malla vial aproximada: CR 80-65
## 6    CR  078   044  000 00000 1112                      Malla vial
##     GRAVEDAD                        BARRIO
## 1 SOLO DAÑOS Cabecera San Antonio de Prado
## 2 SOLO DAÑOS                Estación Villa
## 3 SOLO DAÑOS                  Barrio Colón
## 4 SOLO DAÑOS                Las Lomas No.2
## 5 SOLO DAÑOS Facultad de Minas U. Nacional
## 6 SOLO DAÑOS                  El Velódromo
##                                  COMUNA        DISENO DIA_NOMBRE MES
## 1 Corregimiento de San Antonio de Prado Lote o Predio  MIÉRCOLES   1
## 2                         La Candelaria  Tramo de via  MIÉRCOLES   1
## 3                         La Candelaria  Tramo de via  MIÉRCOLES   1
## 4                            El Poblado  Tramo de via  MIÉRCOLES   1
## 5                               Robledo  Tramo de via  MIÉRCOLES   1
## 6                      Laureles Estadio  Interseccion  MIÉRCOLES   1
str(raw_data_2016)
## 'data.frame':    42841 obs. of  19 variables:
##  $ X.U.FEFF.OBJECTID: int  259034 259035 259036 259037 259038 259040 259041 259042 259044 259045 ...
##  $ X                : num  827278 835106 834811 836021 832265 ...
##  $ Y                : num  1175177 1183570 1182025 1178803 1185704 ...
##  $ RADICADO         : num  1519832 1519765 1519752 1519682 1519685 ...
##  $ FECHA            : Factor w/ 366 levels "2016-01-01T00:00:00.000Z",..: 20 20 20 20 20 20 20 20 20 20 ...
##  $ HORA             : Factor w/ 1092 levels "01:00 AM","01:00 PM",..: 918 36 128 696 878 896 778 81 42 452 ...
##  $ DIA              : int  20 20 20 20 20 20 20 20 20 20 ...
##  $ PERIODO          : int  2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
##  $ CLASE            : Factor w/ 8 levels "","Atropello",..: 5 5 5 5 8 5 5 5 5 5 ...
##  $ DIRECCION        : Factor w/ 12962 levels " CR 59 CL 64 -32",..: 9087 3363 7866 6408 11595 11298 1313 78 1793 5222 ...
##  $ DIRECCION_ENC    : Factor w/ 12631 levels "000","CL     053  000 00000",..: 8828 2700 7540 6119 11176 10918 759 284 1275 201 ...
##  $ CBML             : Factor w/ 396 levels "","0","0101",..: 382 197 210 298 122 246 332 298 207 310 ...
##  $ TIPO_GEOCOD      : Factor w/ 2254 levels "Catastro con Interior",..: 5 5 5 5 2013 5 5 2252 5 5 ...
##  $ GRAVEDAD         : Factor w/ 3 levels "HERIDO","MUERTO",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ BARRIO           : Factor w/ 313 levels "","0","6001",..: 56 111 33 175 112 109 242 175 60 97 ...
##  $ COMUNA           : Factor w/ 25 levels "","0","Aranjuez",..: 9 18 18 14 22 19 5 14 18 14 ...
##  $ DISENO           : Factor w/ 13 levels "","Ciclo Ruta",..: 5 11 11 11 11 4 11 4 4 11 ...
##  $ DIA_NOMBRE       : Factor w/ 7 levels "DOMINGO  ","JUEVES   ",..: 5 5 5 5 5 5 5 5 5 5 ...
##  $ MES              : int  1 1 1 1 1 1 1 1 1 1 ...
levels(raw_data_2016$CLASE)
## [1] ""                  "Atropello"         "Caída de Ocupante"
## [4] "Caida Ocupante"    "Choque"            "Incendio"         
## [7] "Otro"              "Volcamiento"
levels(raw_data_2016$CLASE) <- c("Otro","Atropello","Caida_Ocupante","Caida_Ocupante","Choque",
                                 "Otro","Otro","Volcamiento")
levels(raw_data_2016$CLASE)
## [1] "Otro"           "Atropello"      "Caida_Ocupante" "Choque"        
## [5] "Volcamiento"

Datos 2017

raw_data_2017 <- read.csv(file="./data/Accidentalidad_georreferenciada_2017.csv", encoding="UTF-8", header=TRUE, sep=",")
head(raw_data_2017)
##   X.U.FEFF.OBJECTID        X       Y RADICADO                    FECHA
## 1            504352 834796.6 1181345  1590356 2017-07-20T00:00:00.000Z
## 2            504353 831461.0 1181883  1586285 2017-06-15T00:00:00.000Z
## 3            504354 833229.3 1186996  1588185 2017-07-02T00:00:00.000Z
## 4            504355 833366.8 1181955  1576853 2017-03-29T00:00:00.000Z
## 5            504356 832577.6 1184274  1591283 2017-07-26T00:00:00.000Z
## 6            504358 834246.7 1180257  1578106 2017-04-12T00:00:00.000Z
##       HORA DIA PERIODO          CLASE         DIRECCION
## 1 08:00 AM  20    2017 Caida Ocupante     CR 43 A CL 33
## 2 04:50 PM  15    2017         Choque       CR 80 CL 33
## 3 04:20 PM   2    2017         Choque     CR 80 CL 80 A
## 4 06:29 PM  29    2017         Choque CL 33 Norte CR 65
## 5 08:10 PM  26    2017      Atropello       CL 50 CR 74
## 6 11:10 AM  12    2017         Choque       CR 48 CL 20
##                DIRECCION_ENC CBML TIPO_GEOCOD   GRAVEDAD
## 1 CR  043 A   033  000 00000 1020  Malla vial     HERIDO
## 2   CR  080   033  000 00000 1109  Malla vial SOLO DAÑOS
## 3 CR  080   080 A  000 00000 0710  Malla vial     HERIDO
## 4   CL  033   065  000 00000 1105  Malla vial SOLO DAÑOS
## 5   CL  050   074  000 00000 1115  Malla vial     HERIDO
## 6   CR  048   020  000 00000 1403  Malla vial SOLO DAÑOS
##               BARRIO           COMUNA       DISENO DIA_NOMBRE MES
## 1          San Diego    La Candelaria Interseccion  JUEVES      7
## 2        Las Acacias Laureles Estadio     Glorieta  JUEVES      6
## 3      López de Mesa          Robledo Tramo de via  DOMINGO     7
## 4 Los Conquistadores Laureles Estadio Tramo de via  MIÉRCOLES   3
## 5     Cuarta Brigada Laureles Estadio Tramo de via  MIÉRCOLES   7
## 6      Villa Carlota       El Poblado Tramo de via  MIÉRCOLES   4
str(raw_data_2017)
## 'data.frame':    42563 obs. of  19 variables:
##  $ X.U.FEFF.OBJECTID: int  504352 504353 504354 504355 504356 504358 504359 504360 504361 504362 ...
##  $ X                : num  834797 831461 833229 833367 832578 ...
##  $ Y                : num  1181345 1181883 1186996 1181955 1184274 ...
##  $ RADICADO         : num  1590356 1586285 1588185 1576853 1591283 ...
##  $ FECHA            : Factor w/ 370 levels "2017-01-01T00:00:00.000Z",..: 201 166 183 88 207 102 154 110 180 174 ...
##  $ HORA             : Factor w/ 1106 levels "01:00 AM","01:00 PM",..: 638 321 278 473 657 950 291 362 203 555 ...
##  $ DIA              : int  20 15 2 29 26 12 3 20 29 23 ...
##  $ PERIODO          : int  2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 ...
##  $ CLASE            : Factor w/ 9 levels "Atropello","Caida Ocupante",..: 2 4 4 4 1 4 2 4 4 4 ...
##  $ DIRECCION        : Factor w/ 12879 levels "CL 1 A CR 70",..: 7319 11494 11596 1612 3122 7985 5410 3656 2392 652 ...
##  $ DIRECCION_ENC    : Factor w/ 12595 levels "000","CL     018  000 00000",..: 7116 11091 11186 1035 2406 7639 4443 2902 1738 5432 ...
##  $ CBML             : Factor w/ 403 levels "","0101","0102",..: 217 230 131 224 239 283 112 212 249 303 ...
##  $ TIPO_GEOCOD      : Factor w/ 2569 levels "Catastro con Interior",..: 5 5 5 5 5 5 5 5 5 4 ...
##  $ GRAVEDAD         : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 3 1 3 1 3 1 1 3 3 ...
##  $ BARRIO           : Factor w/ 325 levels "","6001","9086",..: 252 169 185 195 78 314 134 322 89 135 ...
##  $ COMUNA           : Factor w/ 83 levels "","Alejandro Echavarría",..: 46 55 68 55 55 33 30 46 45 33 ...
##  $ DISENO           : Factor w/ 13 levels "","Ciclo Ruta",..: 4 3 11 11 11 11 5 11 4 4 ...
##  $ DIA_NOMBRE       : Factor w/ 7 levels "DOMINGO  ","JUEVES   ",..: 2 2 1 5 5 5 6 2 2 7 ...
##  $ MES              : int  7 6 7 3 7 4 6 4 6 6 ...
levels(raw_data_2017$CLASE)
## [1] "Atropello"          "Caida Ocupante"     "Caída Ocupante"    
## [4] "Choque"             "Choque "            "Choque y Atropello"
## [7] "Incendio"           "Otro"               "Volcamiento"
levels(raw_data_2017$CLASE) <- c("Atropello","Caida_Ocupante","Caida_Ocupante","Choque","Choque",
                                 "Choque","Otro","Otro","Volcamiento")
levels(raw_data_2017$CLASE)
## [1] "Atropello"      "Caida_Ocupante" "Choque"         "Otro"          
## [5] "Volcamiento"
summary(raw_data_2014$CLASE)
##      Atropello Caida_Ocupante         Choque           Otro    Volcamiento 
##           4779           4157          27157           4529            972
summary(raw_data_2015$CLASE)
##           Otro      Atropello Caida_Ocupante         Choque    Volcamiento 
##           4220           4485           3691          28249           1435
summary(raw_data_2016$CLASE)
##           Otro      Atropello Caida_Ocupante         Choque    Volcamiento 
##           4879           4167           3680          28631           1484
summary(raw_data_2017$CLASE)
##      Atropello Caida_Ocupante         Choque           Otro    Volcamiento 
##           3640           3433          29196           4722           1572
raw_data_2018 <- read.csv(file="./data/Accidentalidad_georreferenciada_2018.csv", encoding="UTF-8", header=TRUE, sep=",")
str(raw_data_2018)
## 'data.frame':    40348 obs. of  19 variables:
##  $ X.U.FEFF.OBJECTID: int  550556 550557 550558 550559 550560 550562 550563 550564 550565 550566 ...
##  $ X                : num  833196 833455 835882 831732 835720 ...
##  $ Y                : num  1184350 1187884 1183347 1180062 1181651 ...
##  $ RADICADO         : int  1612819 1612866 1612809 1612812 1612817 1612856 1612823 1612825 1612850 1612815 ...
##  $ FECHA            : Factor w/ 365 levels "2018-01-01T00:00:00.000Z",..: 14 14 14 14 14 14 14 14 14 14 ...
##  $ HORA             : Factor w/ 1485 levels "01:00 AM","01:00 PM",..: 57 57 168 168 182 222 281 334 348 372 ...
##  $ DIA              : int  14 14 14 14 14 14 14 14 14 14 ...
##  $ PERIODO          : int  2018 2018 2018 2018 2018 2018 2018 2018 2018 2018 ...
##  $ CLASE            : Factor w/ 7 levels "Atropello","Caida Ocupante",..: 4 4 2 6 4 1 4 4 4 2 ...
##  $ DIRECCION        : Factor w/ 12504 levels "CL 1 A CR 25",..: 10404 11159 7325 10853 6620 7455 5569 1588 2214 10721 ...
##  $ DIRECCION_ENC    : Factor w/ 12364 levels "000","CL  001   017  000 00000",..: 10180 10919 6991 10609 6409 7256 5538 1097 1679 10470 ...
##  $ CBML             : Factor w/ 375 levels "","0101","0102",..: 207 103 202 307 172 40 214 194 231 104 ...
##  $ TIPO_GEOCOD      : Factor w/ 2405 levels "Catastro con Interior",..: 5 5 5 5 5 3 5 5 5 5 ...
##  $ GRAVEDAD         : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 3 1 1 3 1 3 3 3 1 ...
##  $ BARRIO           : Factor w/ 321 levels "","0","6001",..: 69 262 192 251 108 205 48 237 200 137 ...
##  $ COMUNA           : Factor w/ 24 levels "","Aranjuez",..: 18 12 17 4 5 19 18 17 16 12 ...
##  $ DISENO           : Factor w/ 13 levels "","Ciclo Ruta",..: 4 11 11 4 11 11 4 5 11 4 ...
##  $ DIA_NOMBRE       : Factor w/ 7 levels "DOMINGO  ","JUEVES   ",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ MES              : int  1 1 1 1 1 1 1 1 1 1 ...
levels(raw_data_2018$CLASE)
## [1] "Atropello"      "Caida Ocupante" "Caída Ocupante" "Choque"        
## [5] "Incendio"       "Otro"           "Volcamiento"
levels(raw_data_2018$CLASE) <- c("Atropello","Caida_Ocupante","Caida_Ocupante","Choque","Otro","Otro", "Volcamiento")
levels(raw_data_2018$CLASE)
## [1] "Atropello"      "Caida_Ocupante" "Choque"         "Otro"          
## [5] "Volcamiento"
summary(raw_data_2018$CLASE)
##      Atropello Caida_Ocupante         Choque           Otro    Volcamiento 
##           3604           3617          28207           3746           1174

Union de los datos

Total_Dataset <- rbind(raw_data_2014,raw_data_2015,raw_data_2016, raw_data_2017, raw_data_2018)
str(Total_Dataset)
## 'data.frame':    209426 obs. of  19 variables:
##  $ X.U.FEFF.OBJECTID: int  211279 211280 211281 211282 211283 211284 211285 211286 211287 211288 ...
##  $ X                : num  831190 835014 837033 830649 833741 ...
##  $ Y                : num  1179690 1184224 1184750 1181383 1188644 ...
##  $ RADICADO         : num  1423828 1423839 1423840 1423849 1423890 ...
##  $ FECHA            : Factor w/ 1831 levels "2014-01-01T00:00:00.000Z",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ HORA             : Factor w/ 2239 levels "01:00 AM","01:00 PM",..: 95 954 1 938 777 201 469 268 37 72 ...
##  $ DIA              : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ PERIODO          : int  2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ...
##  $ CLASE            : Factor w/ 5 levels "Atropello","Caida_Ocupante",..: 3 1 1 1 2 3 3 3 3 2 ...
##  $ DIRECCION        : Factor w/ 29182 levels "CL 1 A CR 42",..: 11441 8871 6987 1424 11297 8063 3081 6269 11142 8131 ...
##  $ DIRECCION_ENC    : Factor w/ 27999 levels "000","CL     029  000 00000",..: 11024 8642 6786 915 11166 7817 2469 6072 10863 7898 ...
##  $ CBML             : Factor w/ 699 levels "","0101","01010480009",..: 333 192 39 340 105 48 170 176 241 280 ...
##  $ TIPO_GEOCOD      : Factor w/ 5624 levels "Catastro con Interior",..: 2064 5 5 5 5 5 5 5 5 5 ...
##  $ GRAVEDAD         : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ BARRIO           : Factor w/ 340 levels "","6001","Aguas Frias",..: 181 129 201 175 81 40 31 155 294 302 ...
##  $ COMUNA           : Factor w/ 85 levels "","Aranjuez",..: 4 16 18 4 11 2 5 5 17 12 ...
##  $ DISENO           : Factor w/ 13 levels "","Ciclo Ruta",..: 11 11 11 11 11 4 11 4 11 11 ...
##  $ DIA_NOMBRE       : Factor w/ 7 levels "DOMINGO  ","JUEVES   ",..: 5 5 5 5 5 5 5 5 5 5 ...
##  $ MES              : int  1 1 1 1 1 1 1 1 1 1 ...
levels(Total_Dataset$CLASE)
## [1] "Atropello"      "Caida_Ocupante" "Choque"         "Otro"          
## [5] "Volcamiento"
summary(Total_Dataset$CLASE)
##      Atropello Caida_Ocupante         Choque           Otro    Volcamiento 
##          20675          18578         141440          22096           6637

Para ahorra memoria se eliminan los dataframes por año

rm(raw_data_2014,raw_data_2015,raw_data_2016, raw_data_2017, raw_data_2018)

La Fecha esta cargada como factor, se realiza una transformacion a formato de fecha (date)

Total_Dataset$FECHA <- as.Date(Total_Dataset$FECHA, format="%Y-%m-%d")
tail(Total_Dataset)
##        X.U.FEFF.OBJECTID        X       Y RADICADO      FECHA
## 209421            686550 836789.8 1186516  1652251 2018-12-05
## 209422            686551 834601.3 1186742  1652236 2018-12-05
## 209423            686552 832577.7 1183055  1652193 2018-12-05
## 209424            686553 833974.2 1183603  1652324 2018-12-05
## 209425            686554 834299.9 1180877  1652349 2018-12-05
## 209426            686555 836838.6 1186467  1652347 2018-12-05
##                  HORA DIA PERIODO  CLASE     DIRECCION
## 209421 03:20:00 p. m.   5    2018 Choque CR 44 A CL 88
## 209422 03:20:00 p. m.   5    2018 Choque CR 65 CL 91 C
## 209423 03:20:00 p. m.   5    2018 Choque   CL 44 CR 71
## 209424 03:30:00 p. m.   5    2018 Choque   CR 63 CL 50
## 209425 03:40:00 p. m.   5    2018 Choque   CL 27 CR 46
## 209426 04:10:00 p. m.   5    2018   Otro   CR 44 CL 88
##                     DIRECCION_ENC        CBML
## 209421 CR  044 A   088  000 00000 03020770009
## 209422 CR  065   091 C  000 00000        0513
## 209423   CL  044   071  000 00000        1117
## 209424   CR  063   050  000 00000        1101
## 209425   CL  027   046  000 00000        1401
## 209426   CR  044   088  000 00000        0302
##                             TIPO_GEOCOD   GRAVEDAD                BARRIO
## 209421        Nomenclatura con Interior     HERIDO           Las Granjas
## 209422 Malla vial aproximada: CR 65-91A     HERIDO Francisco Antonio Zea
## 209423                       Malla vial SOLO DAÑOS         Florida Nueva
## 209424                       Malla vial     HERIDO    Carlos E. Restrepo
## 209425                       Malla vial SOLO DAÑOS       Barrio Colombia
## 209426                       Malla vial     HERIDO           Las Granjas
##                  COMUNA        DISENO DIA_NOMBRE MES
## 209421         Manrique  Interseccion  MIÉRCOLES  12
## 209422         Castilla  Interseccion  MIÉRCOLES  12
## 209423 Laureles Estadio  Tramo de via  MIÉRCOLES  12
## 209424 Laureles Estadio  Tramo de via  MIÉRCOLES  12
## 209425       El Poblado Lote o Predio  MIÉRCOLES  12
## 209426         Manrique  Interseccion  MIÉRCOLES  12

Se convierten las variables dia y mes a factor

Total_Dataset$DIA <- as.factor(Total_Dataset$DIA)
Total_Dataset$MES <- as.factor(Total_Dataset$MES)
tail(Total_Dataset)
##        X.U.FEFF.OBJECTID        X       Y RADICADO      FECHA
## 209421            686550 836789.8 1186516  1652251 2018-12-05
## 209422            686551 834601.3 1186742  1652236 2018-12-05
## 209423            686552 832577.7 1183055  1652193 2018-12-05
## 209424            686553 833974.2 1183603  1652324 2018-12-05
## 209425            686554 834299.9 1180877  1652349 2018-12-05
## 209426            686555 836838.6 1186467  1652347 2018-12-05
##                  HORA DIA PERIODO  CLASE     DIRECCION
## 209421 03:20:00 p. m.   5    2018 Choque CR 44 A CL 88
## 209422 03:20:00 p. m.   5    2018 Choque CR 65 CL 91 C
## 209423 03:20:00 p. m.   5    2018 Choque   CL 44 CR 71
## 209424 03:30:00 p. m.   5    2018 Choque   CR 63 CL 50
## 209425 03:40:00 p. m.   5    2018 Choque   CL 27 CR 46
## 209426 04:10:00 p. m.   5    2018   Otro   CR 44 CL 88
##                     DIRECCION_ENC        CBML
## 209421 CR  044 A   088  000 00000 03020770009
## 209422 CR  065   091 C  000 00000        0513
## 209423   CL  044   071  000 00000        1117
## 209424   CR  063   050  000 00000        1101
## 209425   CL  027   046  000 00000        1401
## 209426   CR  044   088  000 00000        0302
##                             TIPO_GEOCOD   GRAVEDAD                BARRIO
## 209421        Nomenclatura con Interior     HERIDO           Las Granjas
## 209422 Malla vial aproximada: CR 65-91A     HERIDO Francisco Antonio Zea
## 209423                       Malla vial SOLO DAÑOS         Florida Nueva
## 209424                       Malla vial     HERIDO    Carlos E. Restrepo
## 209425                       Malla vial SOLO DAÑOS       Barrio Colombia
## 209426                       Malla vial     HERIDO           Las Granjas
##                  COMUNA        DISENO DIA_NOMBRE MES
## 209421         Manrique  Interseccion  MIÉRCOLES  12
## 209422         Castilla  Interseccion  MIÉRCOLES  12
## 209423 Laureles Estadio  Tramo de via  MIÉRCOLES  12
## 209424 Laureles Estadio  Tramo de via  MIÉRCOLES  12
## 209425       El Poblado Lote o Predio  MIÉRCOLES  12
## 209426         Manrique  Interseccion  MIÉRCOLES  12

Se genera frecuencia que es la tabla a analizar

library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite
Total_Dataset_Freq <- sqldf("SELECT FECHA, CLASE, count(CLASE) AS FREQ, DIA_NOMBRE, MES, DIA 
       FROM Total_Dataset
       GROUP BY FECHA, CLASE")

se agrega la variable año al datafrate

Total_Dataset_Freq$ANO <- as.factor(format(Total_Dataset_Freq$FECHA,'%Y'))

Se agrega la variable semana al dataframe

Total_Dataset_Freq$SEMANA <-as.factor(format(Total_Dataset_Freq$FECHA,'%V'))
tail(Total_Dataset_Freq)
##           FECHA          CLASE FREQ DIA_NOMBRE MES DIA  ANO SEMANA
## 9023 2018-12-30    Volcamiento    2  DOMINGO    12  30 2018     52
## 9024 2018-12-31      Atropello    8  LUNES      12  31 2018     01
## 9025 2018-12-31 Caida_Ocupante    6  LUNES      12  31 2018     01
## 9026 2018-12-31         Choque   50  LUNES      12  31 2018     01
## 9027 2018-12-31           Otro   10  LUNES      12  31 2018     01
## 9028 2018-12-31    Volcamiento    2  LUNES      12  31 2018     01

Se depura la variable DIA_NOMBRE para eliminar los espacios, quitar tildes, dar un orden al factor

levels(Total_Dataset_Freq$DIA_NOMBRE)
## [1] "DOMINGO  " "JUEVES   " "LUNES    " "MARTES   " "MIÉRCOLES" "SÁBADO   "
## [7] "VIERNES  "
levels(Total_Dataset_Freq$DIA_NOMBRE) <- c("DOMINGO","JUEVES","LUNES","MARTES","MIERCOLES","SABADO","VIERNES") 
levels(Total_Dataset_Freq$DIA_NOMBRE)
## [1] "DOMINGO"   "JUEVES"    "LUNES"     "MARTES"    "MIERCOLES" "SABADO"   
## [7] "VIERNES"
Total_Dataset_Freq$DIA_NOMBRE <- ordered(Total_Dataset_Freq$DIA_NOMBRE,c("LUNES", "MARTES", "MIERCOLES", "JUEVES", "VIERNES", "SABADO", "DOMINGO"))
levels(Total_Dataset_Freq$DIA_NOMBRE)
## [1] "LUNES"     "MARTES"    "MIERCOLES" "JUEVES"    "VIERNES"   "SABADO"   
## [7] "DOMINGO"

Ahora se agregan otras variables a que caracterizan fechas especiales. Se carga un CSV y se realiza un left join a la tabla Total_Dataset_Freq

Dias_Especiales <- read.csv(file="./data/Caracterizacion.csv", encoding="UTF-8", header=TRUE, sep=";",stringsAsFactors=FALSE)
head(Dias_Especiales)
##        Fecha Lunes martes miercoles jueves viernes sabado domingo Enero
## 1 01-01-2014     0      0         1      0       0      0       0     1
## 2 02-01-2014     0      0         0      1       0      0       0     1
## 3 03-01-2014     0      0         0      0       1      0       0     1
## 4 04-01-2014     0      0         0      0       0      1       0     1
## 5 05-01-2014     0      0         0      0       0      0       1     1
## 6 06-01-2014     1      0         0      0       0      0       0     1
##   Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre
## 1       0     0     0    0     0     0      0          0       0         0
## 2       0     0     0    0     0     0      0          0       0         0
## 3       0     0     0    0     0     0      0          0       0         0
## 4       0     0     0    0     0     0      0          0       0         0
## 5       0     0     0    0     0     0      0          0       0         0
## 6       0     0     0    0     0     0      0          0       0         0
##   Diciembre Feriado Semana.Santa Prima Salondelautomovil Mujer Padre Madre
## 1         0       1            0     0                 0     0     0     0
## 2         0       0            0     0                 0     0     0     0
## 3         0       0            0     0                 0     0     0     0
## 4         0       0            0     0                 0     0     0     0
## 5         0       0            0     0                 0     0     0     0
## 6         0       1            0     0                 0     0     0     0
##   AmoryAmistad
## 1            0
## 2            0
## 3            0
## 4            0
## 5            0
## 6            0

Se transforma la variable FEcha a formato Fecha pues se cargo como factor y se unifica el nombre a FECHA para que coincida con l clave de la tabla Total_Dataset_Freq

Dias_Especiales <- Dias_Especiales[1:1826,]
Dias_Especiales$FECHA <- as.Date(Dias_Especiales$Fecha, format="%d-%m-%Y")
Dias_Especiales$Fecha <- NULL

Estos dias especiales se incorporan al dataframe Total_Dataset_Freq

Total_Dataset_Freq <- sqldf("SELECT * 
              FROM Total_Dataset_Freq
              LEFT JOIN Dias_Especiales USING(FECHA)")
head(Total_Dataset_Freq)
##        FECHA          CLASE FREQ DIA_NOMBRE MES DIA  ANO SEMANA Lunes
## 1 2014-01-01      Atropello   13  MIERCOLES   1   1 2014     01     0
## 2 2014-01-01 Caida_Ocupante    7  MIERCOLES   1   1 2014     01     0
## 3 2014-01-01         Choque   35  MIERCOLES   1   1 2014     01     0
## 4 2014-01-01           Otro   18  MIERCOLES   1   1 2014     01     0
## 5 2014-01-01    Volcamiento    1  MIERCOLES   1   1 2014     01     0
## 6 2014-01-02      Atropello   12     JUEVES   1   2 2014     01     0
##   martes miercoles jueves viernes sabado domingo Enero Febrero Marzo Abril
## 1      0         1      0       0      0       0     1       0     0     0
## 2      0         1      0       0      0       0     1       0     0     0
## 3      0         1      0       0      0       0     1       0     0     0
## 4      0         1      0       0      0       0     1       0     0     0
## 5      0         1      0       0      0       0     1       0     0     0
## 6      0         0      1       0      0       0     1       0     0     0
##   Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Feriado
## 1    0     0     0      0          0       0         0         0       1
## 2    0     0     0      0          0       0         0         0       1
## 3    0     0     0      0          0       0         0         0       1
## 4    0     0     0      0          0       0         0         0       1
## 5    0     0     0      0          0       0         0         0       1
## 6    0     0     0      0          0       0         0         0       0
##   Semana.Santa Prima Salondelautomovil Mujer Padre Madre AmoryAmistad
## 1            0     0                 0     0     0     0            0
## 2            0     0                 0     0     0     0            0
## 3            0     0                 0     0     0     0            0
## 4            0     0                 0     0     0     0            0
## 5            0     0                 0     0     0     0            0
## 6            0     0                 0     0     0     0            0

ANALISIS DESCRIPTIVO

Para el Total de Accidentes

library(plotly)
## Loading required package: ggplot2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
plot_ly(data=Total_Dataset_Freq,
        x = ~FECHA,
        y = ~FREQ,
        type = "scatter", mode = "lines",
        split = ~ANO,
         ine=list(width=1))%>%
  layout(title='Accidentes_Medellin',
         xaxis=list(title="Dia"),
         yaxis=list(title="Unidades"))
## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
plot_ly(data=Total_Dataset_Freq,
        x = ~ANO,
        y = ~FREQ,
        type = "box")%>%
  layout(title='Accidentes_Medellin',
         xaxis=list(title="ano"),
         yaxis=list(title="Unidades"))
plot_ly(data=Total_Dataset_Freq,
        x = ~MES,
        y = ~FREQ,
        type = "box")%>%
  layout(title='Accidentes_Medellin',
         xaxis=list(title="Mes"),
         yaxis=list(title="Unidades"))
plot_ly(data=Total_Dataset_Freq,
        x = ~DIA_NOMBRE,
        y = ~FREQ,
        type = "box")%>%
  layout(title='Accidentes_Medellin',
         xaxis=list(title="Dia_Nombre"),
         yaxis=list(title="Unidades"))

Se observa que excepto el domingo que es menor, los demasla accidentalidad promedio es muy similar, pero se diferencia en la cola derecha de la distribucion

plot_ly(data=Total_Dataset_Freq,
        x = ~SEMANA,
        y = ~FREQ,
        type = "box")%>%
  layout(title='Accidentes_Medellin',
         xaxis=list(title="SEMANA"),
         yaxis=list(title="Unidades"))
attach(Total_Dataset_Freq)
aggregate(FREQ~ANO*MES, data=Total_Dataset_Freq,FUN=mean)%>%
  plot_ly(x = ~MES,
         y = ~FREQ,
         type = "scatter" ,mode = "lines",
         split = ~ANO,
         line=list(width=1))%>%
  layout(title='Promedio diario mensual de ACCIDENTES en Medellin',
         xaxis=list(title="Mes"),
         yaxis=list(title="No. Accidentes"))
aggregate(FREQ~ANO*DIA_NOMBRE, data=Total_Dataset_Freq,FUN=mean)%>%
  plot_ly(x = ~DIA_NOMBRE,
         y = ~FREQ,
         type = "scatter" ,mode = "lines",
         split = ~ANO,
         line=list(width=1))%>%
  layout(title='Promedio diario DIA DE LA SEMANA de Accidentes de Transito en Medellin',
         xaxis=list(title="Dia Semana"),
         yaxis=list(title="No. Accidentes"))
aggregate(FREQ~ANO*CLASE, data=Total_Dataset_Freq,FUN=mean)%>%
  plot_ly(x = ~CLASE,
         y = ~FREQ,
         type = "scatter" ,mode = "lines",
         split = ~ANO,
         line=list(width=1))%>%
  layout(title='Promedio diario CLASE de Accidentes de Transito en Medellin',
         xaxis=list(title="Clase"),
         yaxis=list(title="No. Accidentes"))

LAs predicciones a realizar seran para cada uno de las 5 clases de accidentes, y para los periodos de tiempo mensual, semanal y diario, por lo que se generaran 15 modelos, 5 clases de accidente por 3 tipos de periodo de prediccion.

Se realiza entonces la particion de los datos por frecuencia: M: Mensual, S: Semanal, D: Diario

primero se realiza un reshape del dataframe para consolidar los casos por dia y separarlos factores CLASE en columnas

library(reshape)
## 
## Attaching package: 'reshape'
## The following object is masked from 'package:plotly':
## 
##     rename
Total_Dataset_Freq <- cast(Total_Dataset_Freq[,c(1,2,3)],FECHA~CLASE)
## Using FREQ as value column.  Use the value argument to cast to override this choice
Total_Dataset_Freq <- sqldf("SELECT * 
              FROM Total_Dataset_Freq
              LEFT JOIN Dias_Especiales USING(FECHA)")

se agrega la variable año al datafrate

Total_Dataset_Freq$ANO <- as.factor(format(Total_Dataset_Freq$FECHA,'%Y'))

Se agrega la variable semana al dataframe

Total_Dataset_Freq$SEMANA <-as.factor(format(Total_Dataset_Freq$FECHA,'%V'))

SE agrega la variable dia al dataframe

Total_Dataset_Freq$DIA <-as.factor(format(Total_Dataset_Freq$FECHA,'%d'))

Se agrega el dia de la semana

Total_Dataset_Freq$DIA_SEMANA <-as.factor(weekdays(Total_Dataset_Freq$FECHA))

Se agrega el mes

Total_Dataset_Freq$MES <-as.factor(format(Total_Dataset_Freq$FECHA,'%m'))
head(Total_Dataset_Freq)
##        FECHA Atropello Caida_Ocupante Choque Otro Volcamiento Lunes martes
## 1 2014-01-01        13              7     35   18           1     0      0
## 2 2014-01-02        12              7     43    9           1     0      0
## 3 2014-01-03         7              5     67   13           1     0      0
## 4 2014-01-04        11              7     40    9           1     0      0
## 5 2014-01-05         6              5     43   10           3     0      0
## 6 2014-01-06         4              5     23    9           2     1      0
##   miercoles jueves viernes sabado domingo Enero Febrero Marzo Abril Mayo
## 1         1      0       0      0       0     1       0     0     0    0
## 2         0      1       0      0       0     1       0     0     0    0
## 3         0      0       1      0       0     1       0     0     0    0
## 4         0      0       0      1       0     1       0     0     0    0
## 5         0      0       0      0       1     1       0     0     0    0
## 6         0      0       0      0       0     1       0     0     0    0
##   Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Feriado
## 1     0     0      0          0       0         0         0       1
## 2     0     0      0          0       0         0         0       0
## 3     0     0      0          0       0         0         0       0
## 4     0     0      0          0       0         0         0       0
## 5     0     0      0          0       0         0         0       0
## 6     0     0      0          0       0         0         0       1
##   Semana.Santa Prima Salondelautomovil Mujer Padre Madre AmoryAmistad  ANO
## 1            0     0                 0     0     0     0            0 2014
## 2            0     0                 0     0     0     0            0 2014
## 3            0     0                 0     0     0     0            0 2014
## 4            0     0                 0     0     0     0            0 2014
## 5            0     0                 0     0     0     0            0 2014
## 6            0     0                 0     0     0     0            0 2014
##   SEMANA DIA DIA_SEMANA MES
## 1     01  01  miércoles  01
## 2     01  02     jueves  01
## 3     01  03    viernes  01
## 4     01  04     sábado  01
## 5     01  05    domingo  01
## 6     02  06      lunes  01

Se agrega la columna Total_Accidentes

Total_Dataset_Freq$Total_Accidentes <- Total_Dataset_Freq$Atropello + Total_Dataset_Freq$Caida_Ocupante + Total_Dataset_Freq$Choque + Total_Dataset_Freq$Otro + Total_Dataset_Freq$Volcamiento
tail(Total_Dataset_Freq)
##           FECHA Atropello Caida_Ocupante Choque Otro Volcamiento Lunes
## 1821 2018-12-26        11              7     84    6           4     0
## 1822 2018-12-27        13              3     77    9           2     0
## 1823 2018-12-28         6              6     84    7           1     0
## 1824 2018-12-29        15              4     59    7           3     0
## 1825 2018-12-30         5              7     33   10           2     0
## 1826 2018-12-31         8              6     50   10           2     0
##      martes miercoles jueves viernes sabado domingo Enero Febrero Marzo
## 1821      0         0      0       0      0       0     0       0     0
## 1822      0         0      0       0      0       0     0       0     0
## 1823      0         0      0       0      0       0     0       0     0
## 1824      0         0      0       0      0       0     0       0     0
## 1825      0         0      0       0      0       0     0       0     0
## 1826      0         0      0       0      0       0     0       0     0
##      Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre
## 1821     0    0     0     0      0          0       0         0         0
## 1822     0    0     0     0      0          0       0         0         0
## 1823     0    0     0     0      0          0       0         0         0
## 1824     0    0     0     0      0          0       0         0         0
## 1825     0    0     0     0      0          0       0         0         0
## 1826     0    0     0     0      0          0       0         0         0
##      Feriado Semana.Santa Prima Salondelautomovil Mujer Padre Madre
## 1821       0            0     0                 0     0     0     0
## 1822       0            0     0                 0     0     0     0
## 1823       0            0     0                 0     0     0     0
## 1824       0            0     0                 0     0     0     0
## 1825       0            0     0                 0     0     0     0
## 1826       0            0     0                 0     0     0     0
##      AmoryAmistad  ANO SEMANA DIA DIA_SEMANA MES Total_Accidentes
## 1821            0 2018     52  26  miércoles  12              112
## 1822            0 2018     52  27     jueves  12              104
## 1823            0 2018     52  28    viernes  12              104
## 1824            0 2018     52  29     sábado  12               88
## 1825            0 2018     52  30    domingo  12               57
## 1826            0 2018     01  31      lunes  12               76
Total_Dataset_Freq[is.na(Total_Dataset_Freq)] <- 0

EVALUACION DE MODELOS

1. Particion de los datos para entrenamiento y test

Train_D_Dataset <- subset(Total_Dataset_Freq, ANO!="2018")
summary(Train_D_Dataset$ANO)
## 2014 2015 2016 2017 2018 
##  365  365  366  365    0

Se ajustan otra vez los niveles del factor ANO

Train_D_Dataset$ANO <- factor(Train_D_Dataset$ANO)
summary(Train_D_Dataset$ANO)
## 2014 2015 2016 2017 
##  365  365  366  365
library(sqldf)
Test_D_Dataset <- sqldf("SELECT *  
       FROM Total_Dataset_Freq
       WHERE ANO == 2018")
summary(Test_D_Dataset$ANO)
## 2014 2015 2016 2017 2018 
##    0    0    0    0  365

Se ajustan otra vez los niveles del factor ANO

Test_D_Dataset$ANO <- factor(Test_D_Dataset$ANO)
summary(Test_D_Dataset$ANO)
## 2018 
##  365

2. KNN

set.seed(1) # fija la semilla del generador de números para que sea reproducible
head(Train_D_Dataset)
##        FECHA Atropello Caida_Ocupante Choque Otro Volcamiento Lunes martes
## 1 2014-01-01        13              7     35   18           1     0      0
## 2 2014-01-02        12              7     43    9           1     0      0
## 3 2014-01-03         7              5     67   13           1     0      0
## 4 2014-01-04        11              7     40    9           1     0      0
## 5 2014-01-05         6              5     43   10           3     0      0
## 6 2014-01-06         4              5     23    9           2     1      0
##   miercoles jueves viernes sabado domingo Enero Febrero Marzo Abril Mayo
## 1         1      0       0      0       0     1       0     0     0    0
## 2         0      1       0      0       0     1       0     0     0    0
## 3         0      0       1      0       0     1       0     0     0    0
## 4         0      0       0      1       0     1       0     0     0    0
## 5         0      0       0      0       1     1       0     0     0    0
## 6         0      0       0      0       0     1       0     0     0    0
##   Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Feriado
## 1     0     0      0          0       0         0         0       1
## 2     0     0      0          0       0         0         0       0
## 3     0     0      0          0       0         0         0       0
## 4     0     0      0          0       0         0         0       0
## 5     0     0      0          0       0         0         0       0
## 6     0     0      0          0       0         0         0       1
##   Semana.Santa Prima Salondelautomovil Mujer Padre Madre AmoryAmistad  ANO
## 1            0     0                 0     0     0     0            0 2014
## 2            0     0                 0     0     0     0            0 2014
## 3            0     0                 0     0     0     0            0 2014
## 4            0     0                 0     0     0     0            0 2014
## 5            0     0                 0     0     0     0            0 2014
## 6            0     0                 0     0     0     0            0 2014
##   SEMANA DIA DIA_SEMANA MES Total_Accidentes
## 1     01  01  miércoles  01               74
## 2     01  02     jueves  01               72
## 3     01  03    viernes  01               93
## 4     01  04     sábado  01               68
## 5     01  05    domingo  01               67
## 6     02  06      lunes  01               43

#DIA_NOMBRE+DIA+SEMANA+MES+ANO+AmoryAmistad+Madre+Padre+Mujer+Prima+Semana.Santa+Feriado

library(caret)
## Loading required package: lattice
trcntrl = trainControl(method="cv", number=10)
caret_knn_fit = caret::train(Total_Accidentes~DIA+SEMANA+MES+DIA_SEMANA, data=Train_D_Dataset,
                      method = "knn", trControl = trcntrl,
                      preProcess=c("center", "scale"),
                      tuneLength = 10)
summary(caret_knn_fit)
##             Length Class      Mode     
## learn        2     -none-     list     
## k            1     -none-     numeric  
## theDots      0     -none-     list     
## xNames      99     -none-     character
## problemType  1     -none-     character
## tuneValue    1     data.frame list     
## obsLevels    1     -none-     logical  
## param        0     -none-     list
caret_knn_fit
## k-Nearest Neighbors 
## 
## 1461 samples
##    4 predictor
## 
## Pre-processing: centered (99), scaled (99) 
## Resampling: Cross-Validated (10 fold) 
## Summary of sample sizes: 1314, 1316, 1315, 1314, 1314, 1317, ... 
## Resampling results across tuning parameters:
## 
##   k   RMSE      Rsquared    MAE     
##    5  37.20650  0.03546325  27.39987
##    7  38.15235  0.01924245  29.66585
##    9  37.90840  0.01621626  29.76262
##   11  37.22423  0.01783186  28.68736
##   13  36.80734  0.01715253  27.93613
##   15  36.50205  0.01757764  27.33275
##   17  36.17714  0.02072280  26.83749
##   19  35.99647  0.02419315  26.56667
##   21  35.91551  0.02313338  26.38848
##   23  35.89796  0.02223166  26.36860
## 
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was k = 23.

Calculo MSE y RMSE para los datos de entrenamiento

y_tr_pred_knn<-predict(caret_knn_fit,Train_D_Dataset[,c("DIA","SEMANA","MES","DIA_SEMANA")])
mse_tr_knn<-mean((Train_D_Dataset$Total_Accidentes-y_tr_pred_knn)^2) # calcula el mse de entrenamiento
RMSE_tr_knn = sqrt(mse_tr_knn)
mse_tr_knn
## [1] 1179.59
RMSE_tr_knn
## [1] 34.34516

Calculo MSE y RMSE para los datos de prueba (2018)

y_test_pred_knn<-predict(caret_knn_fit,Test_D_Dataset[,c("DIA","SEMANA","MES","DIA_SEMANA")])
mse_test_knn<-mean((Test_D_Dataset$Total_Accidentes-y_test_pred_knn)^2) # calcula el mse de entrenamiento
RMSE_test_knn = sqrt(mse_test_knn)
mse_test_knn
## [1] 1489.88
RMSE_test_knn
## [1] 38.59896
plot_ly (data=Test_D_Dataset,
         x = ~FECHA,
         y = ~Total_Accidentes,
         type = "scatter" ,mode = "lines",
         name='Real',
         line=list(width=1,color='rgb(205, 12, 24)'))%>%
  add_trace(y= ~y_test_pred_knn,
            name='Modelo knn',
            line=list(width=1,color='rgb(22, 96, 167)'))%>%
  layout(title='Total Accidentes',
         xaxis=list(title="Fecha"),
         yaxis=list(title="Accidentes"),
         legend = list(x = 0.75, y = 0.9))

2. REGRESION LINEAL

head(Train_D_Dataset)
##        FECHA Atropello Caida_Ocupante Choque Otro Volcamiento Lunes martes
## 1 2014-01-01        13              7     35   18           1     0      0
## 2 2014-01-02        12              7     43    9           1     0      0
## 3 2014-01-03         7              5     67   13           1     0      0
## 4 2014-01-04        11              7     40    9           1     0      0
## 5 2014-01-05         6              5     43   10           3     0      0
## 6 2014-01-06         4              5     23    9           2     1      0
##   miercoles jueves viernes sabado domingo Enero Febrero Marzo Abril Mayo
## 1         1      0       0      0       0     1       0     0     0    0
## 2         0      1       0      0       0     1       0     0     0    0
## 3         0      0       1      0       0     1       0     0     0    0
## 4         0      0       0      1       0     1       0     0     0    0
## 5         0      0       0      0       1     1       0     0     0    0
## 6         0      0       0      0       0     1       0     0     0    0
##   Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Feriado
## 1     0     0      0          0       0         0         0       1
## 2     0     0      0          0       0         0         0       0
## 3     0     0      0          0       0         0         0       0
## 4     0     0      0          0       0         0         0       0
## 5     0     0      0          0       0         0         0       0
## 6     0     0      0          0       0         0         0       1
##   Semana.Santa Prima Salondelautomovil Mujer Padre Madre AmoryAmistad  ANO
## 1            0     0                 0     0     0     0            0 2014
## 2            0     0                 0     0     0     0            0 2014
## 3            0     0                 0     0     0     0            0 2014
## 4            0     0                 0     0     0     0            0 2014
## 5            0     0                 0     0     0     0            0 2014
## 6            0     0                 0     0     0     0            0 2014
##   SEMANA DIA DIA_SEMANA MES Total_Accidentes
## 1     01  01  miércoles  01               74
## 2     01  02     jueves  01               72
## 3     01  03    viernes  01               93
## 4     01  04     sábado  01               68
## 5     01  05    domingo  01               67
## 6     02  06      lunes  01               43
trcntrl = trainControl(method="cv", number=10)
caret_lm_fit = caret::train(Total_Accidentes~SEMANA+DIA_SEMANA+Semana.Santa+Prima+Feriado, data=Train_D_Dataset,
                      method = "lm", trControl = trcntrl,
                      preProcess=c("center", "scale"),
                      tuneLength = 10)
summary(caret_lm_fit)
## 
## Call:
## lm(formula = .outcome ~ ., data = dat)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -136.358   -6.938    3.814   14.381   78.353 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         110.33881    0.77012 143.276  < 2e-16 ***
## SEMANA02              0.05773    1.10368   0.052 0.958294    
## SEMANA03              1.99972    1.10389   1.812 0.070276 .  
## SEMANA04              2.81887    1.10449   2.552 0.010810 *  
## SEMANA05              3.71525    1.10449   3.364 0.000790 ***
## SEMANA06              3.24991    1.10449   2.942 0.003310 ** 
## SEMANA07              5.06227    1.10449   4.583 4.98e-06 ***
## SEMANA08              3.90628    1.10449   3.537 0.000418 ***
## SEMANA09              4.90553    1.10449   4.441 9.64e-06 ***
## SEMANA10              5.30719    1.10449   4.805 1.71e-06 ***
## SEMANA11              4.55926    1.10589   4.123 3.96e-05 ***
## SEMANA12              4.67155    1.12114   4.167 3.28e-05 ***
## SEMANA13              4.68924    1.10507   4.243 2.35e-05 ***
## SEMANA14              4.62146    1.13335   4.078 4.80e-05 ***
## SEMANA15              3.91121    1.13335   3.451 0.000575 ***
## SEMANA16              3.97337    1.12217   3.541 0.000412 ***
## SEMANA17              5.40401    1.10389   4.895 1.09e-06 ***
## SEMANA18              5.37235    1.10368   4.868 1.26e-06 ***
## SEMANA19              4.15985    1.10389   3.768 0.000171 ***
## SEMANA20              5.45903    1.10449   4.943 8.64e-07 ***
## SEMANA21              4.32150    1.10389   3.915 9.48e-05 ***
## SEMANA22              3.64972    1.11698   3.267 0.001111 ** 
## SEMANA23              4.66444    1.31320   3.552 0.000395 ***
## SEMANA24              5.09173    1.31329   3.877 0.000111 ***
## SEMANA25              4.77710    1.31320   3.638 0.000285 ***
## SEMANA26              3.25107    1.23993   2.622 0.008837 ** 
## SEMANA27              4.16391    1.10012   3.785 0.000160 ***
## SEMANA28              3.89649    1.10449   3.528 0.000432 ***
## SEMANA29              5.46052    1.10368   4.948 8.43e-07 ***
## SEMANA30              4.89459    1.10389   4.434 9.98e-06 ***
## SEMANA31              6.33958    1.10389   5.743 1.14e-08 ***
## SEMANA32              5.31847    1.10368   4.819 1.60e-06 ***
## SEMANA33              5.60974    1.10389   5.082 4.24e-07 ***
## SEMANA34              3.83429    1.10368   3.474 0.000528 ***
## SEMANA35              5.16024    1.10449   4.672 3.27e-06 ***
## SEMANA36              5.08187    1.10449   4.601 4.58e-06 ***
## SEMANA37              5.44434    1.10449   4.929 9.24e-07 ***
## SEMANA38              5.36107    1.10449   4.854 1.35e-06 ***
## SEMANA39              4.83695    1.10449   4.379 1.28e-05 ***
## SEMANA40              4.64592    1.10449   4.206 2.76e-05 ***
## SEMANA41              2.90214    1.10449   2.628 0.008693 ** 
## SEMANA42              2.89268    1.10406   2.620 0.008887 ** 
## SEMANA43              4.30304    1.10449   3.896 0.000102 ***
## SEMANA44              4.96431    1.10449   4.495 7.54e-06 ***
## SEMANA45              3.64212    1.10406   3.299 0.000995 ***
## SEMANA46              5.08939    1.10362   4.612 4.36e-06 ***
## SEMANA47              4.30566    1.10362   3.901 0.000100 ***
## SEMANA48              3.42900    1.10582   3.101 0.001968 ** 
## SEMANA49              4.13783    1.29758   3.189 0.001460 ** 
## SEMANA50              4.32156    1.31320   3.291 0.001024 ** 
## SEMANA51              6.37997    1.31329   4.858 1.32e-06 ***
## SEMANA52              3.62124    1.29821   2.789 0.005352 ** 
## SEMANA53             -0.28446    0.88588  -0.321 0.748175    
## DIA_SEMANAjueves     15.08847    1.00950  14.946  < 2e-16 ***
## DIA_SEMANAlunes      16.24040    1.03103  15.752  < 2e-16 ***
## DIA_SEMANAmartes     15.92445    1.01068  15.756  < 2e-16 ***
## DIA_SEMANAmiércoles  16.25711    1.01105  16.079  < 2e-16 ***
## DIA_SEMANAsábado     14.14228    1.01205  13.974  < 2e-16 ***
## DIA_SEMANAviernes    17.05877    1.00942  16.900  < 2e-16 ***
## Semana.Santa         -1.20507    0.93299  -1.292 0.196701    
## Prima                -1.68227    2.20795  -0.762 0.446239    
## Feriado              -9.67567    0.87362 -11.075  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 29.44 on 1399 degrees of freedom
## Multiple R-squared:  0.3546, Adjusted R-squared:  0.3264 
## F-statistic:  12.6 on 61 and 1399 DF,  p-value: < 2.2e-16
caret_lm_fit
## Linear Regression 
## 
## 1461 samples
##    5 predictor
## 
## Pre-processing: centered (61), scaled (61) 
## Resampling: Cross-Validated (10 fold) 
## Summary of sample sizes: 1314, 1315, 1315, 1316, 1314, 1315, ... 
## Resampling results:
## 
##   RMSE      Rsquared   MAE     
##   29.87212  0.3131865  18.38079
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE

Calculo MSE y RMSE para los datos de entrenamiento

y_tr_pred_lm<-predict(caret_lm_fit,Train_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_tr_lm<-mean((Train_D_Dataset$Total_Accidentes-y_tr_pred_lm)^2) # calcula el mse de entrenamiento
RMSE_tr_lm = sqrt(mse_tr_lm)
mse_tr_lm
## [1] 829.7158
RMSE_tr_lm
## [1] 28.80479
y_test_pred_lm<-predict(caret_lm_fit,Test_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_test_lm<-mean((Test_D_Dataset$Total_Accidentes-y_test_pred_lm)^2) # calcula el mse de entrenamiento
RMSE_test_lm = sqrt(mse_test_lm)
mse_test_lm
## [1] 1170.291
RMSE_test_lm
## [1] 34.20952
plot_ly (data=Test_D_Dataset,
         x = ~FECHA,
         y = ~Total_Accidentes,
         type = "scatter" ,mode = "lines",
         name='Real',
         line=list(width=1,color='rgb(205, 12, 24)'))%>%
  add_trace(y= ~y_test_pred_lm,
            name='Modelo lm',
            line=list(width=1,color='rgb(22, 96, 167)'))%>%
  layout(title='Total Accidentes',
         xaxis=list(title="Fecha"),
         yaxis=list(title="Accidentes"),
         legend = list(x = 0.75, y = 0.9))

3. MODELO LINEAL GENERALIZADO

4. ARBOLES DE REGRESION

trcntrl = trainControl(method="cv", number=10)
caret_tree_fit = caret::train(Total_Accidentes~SEMANA+DIA_SEMANA+Semana.Santa+Prima+Feriado, data=Train_D_Dataset,
                      method = "rpart", trControl = trcntrl,
                      parms = list(split = "gini"),
                      preProcess=c("center", "scale"),
                      tuneLength = 10)
## Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info =
## trainInfo, : There were missing values in resampled performance measures.
caret_tree_fit
## CART 
## 
## 1461 samples
##    5 predictor
## 
## Pre-processing: centered (61), scaled (61) 
## Resampling: Cross-Validated (10 fold) 
## Summary of sample sizes: 1314, 1315, 1315, 1315, 1317, 1316, ... 
## Resampling results across tuning parameters:
## 
##   cp            RMSE      Rsquared    MAE     
##   0.0000984576  29.96655  0.30902646  18.53967
##   0.0001879013  29.95863  0.30940917  18.52437
##   0.0004261127  29.94556  0.30987363  18.50426
##   0.0004661169  29.95070  0.30958157  18.51365
##   0.0010645005  30.00234  0.30761761  18.57429
##   0.0011818415  30.00849  0.30736715  18.59426
##   0.0014555821  29.97843  0.30885589  18.57162
##   0.0017171339  29.96178  0.30951866  18.55885
##   0.0358877731  32.93349  0.16066605  22.15187
##   0.0864731969  35.14401  0.05752186  25.28711
## 
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was cp = 0.0004261127.
y_tr_pred_tree<-predict(caret_tree_fit,Train_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_tr_tree<-mean((Train_D_Dataset$Total_Accidentes-y_tr_pred_tree)^2) # calcula el mse de entrenamiento
RMSE_tr_tree = sqrt(mse_tr_tree)
mse_tr_tree
## [1] 889.9898
RMSE_tr_tree
## [1] 29.8327
y_test_pred_tree<-predict(caret_tree_fit,Test_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_test_tree<-mean((Test_D_Dataset$Total_Accidentes-y_test_pred_tree)^2) # calcula el mse de entrenamiento
RMSE_test_tree = sqrt(mse_test_tree)
mse_test_tree
## [1] 1204.817
RMSE_test_tree
## [1] 34.71048
plot_ly (data=Test_D_Dataset,
         x = ~FECHA,
         y = ~Total_Accidentes,
         type = "scatter" ,mode = "lines",
         name='Real',
         line=list(width=1,color='rgb(205, 12, 24)'))%>%
  add_trace(y= ~y_test_pred_tree,
            name='Modelo lm',
            line=list(width=1,color='rgb(22, 96, 167)'))%>%
  layout(title='Total Accidentes',
         xaxis=list(title="Fecha"),
         yaxis=list(title="Accidentes"),
         legend = list(x = 0.75, y = 0.9))

5. BOSQUE ALEATORIO

trcntrl = trainControl(method="cv", number=10)
caret_rf_fit = caret::train(Total_Accidentes~SEMANA+DIA_SEMANA+Semana.Santa+Prima+Feriado, data=Train_D_Dataset,
                      method = "rf", trControl = trcntrl,
                      prox=TRUE,allowParallel=TRUE)
summary(caret_rf_fit)
##                 Length  Class      Mode     
## call                  6 -none-     call     
## type                  1 -none-     character
## predicted          1461 -none-     numeric  
## mse                 500 -none-     numeric  
## rsq                 500 -none-     numeric  
## oob.times          1461 -none-     numeric  
## importance           61 -none-     numeric  
## importanceSD          0 -none-     NULL     
## localImportance       0 -none-     NULL     
## proximity       2134521 -none-     numeric  
## ntree                 1 -none-     numeric  
## mtry                  1 -none-     numeric  
## forest               11 -none-     list     
## coefs                 0 -none-     NULL     
## y                  1461 -none-     numeric  
## test                  0 -none-     NULL     
## inbag                 0 -none-     NULL     
## xNames               61 -none-     character
## problemType           1 -none-     character
## tuneValue             1 data.frame list     
## obsLevels             1 -none-     logical  
## param                 2 -none-     list
caret_rf_fit
## Random Forest 
## 
## 1461 samples
##    5 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (10 fold) 
## Summary of sample sizes: 1314, 1314, 1314, 1316, 1315, 1314, ... 
## Resampling results across tuning parameters:
## 
##   mtry  RMSE      Rsquared   MAE     
##    2    33.63886  0.1746341  23.86391
##   31    33.20639  0.2149849  21.64351
##   61    33.37352  0.2131652  21.76263
## 
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was mtry = 31.
y_tr_pred_rf<-predict(caret_rf_fit,Train_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_tr_rf<-mean((Train_D_Dataset$Total_Accidentes-y_tr_pred_rf)^2) # calcula el mse de entrenamiento
RMSE_tr_rf = sqrt(mse_tr_rf)
mse_tr_rf
## [1] 605.4123
RMSE_tr_rf
## [1] 24.60513
y_test_pred_rf<-predict(caret_rf_fit,Test_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_test_rf<-mean((Test_D_Dataset$Total_Accidentes-y_test_pred_rf)^2) # calcula el mse de entrenamiento
RMSE_test_rf = sqrt(mse_test_rf)
mse_test_rf
## [1] 1345.366
RMSE_test_rf
## [1] 36.67923
plot_ly (data=Test_D_Dataset,
         x = ~FECHA,
         y = ~Total_Accidentes,
         type = "scatter" ,mode = "lines",
         name='Real',
         line=list(width=1,color='rgb(205, 12, 24)'))%>%
  add_trace(y= ~y_test_pred_rf,
            name='Modelo lm',
            line=list(width=1,color='rgb(22, 96, 167)'))%>%
  layout(title='Total Accidentes',
         xaxis=list(title="Fecha"),
         yaxis=list(title="Accidentes"),
         legend = list(x = 0.75, y = 0.9))

6. XGBOOST

7. RED NEURONAL

8. SERIE DE TIEMPO

ELECCION DEL MODELO